package model.comunication;

import java.util.ArrayList;
import java.util.List;

import model.IRHorarioCursada;
import model.dba.IRHorarioCursadaDAO;


public class IIRHorarioCursada {
	private IRHorarioCursadaDAO irHorarioCursadaDAO;
	private static IIRHorarioCursada  irHorarioCursadaInterface;

	private IIRHorarioCursada() {
		irHorarioCursadaDAO = IRHorarioCursadaDAO.getInstance();
	}

	public static IIRHorarioCursada getInstance() {
		if (irHorarioCursadaInterface == null) {
			irHorarioCursadaInterface = new IIRHorarioCursada();
		}
		return irHorarioCursadaInterface;
	}

	/**
	 * Crea el objeto
	 * 
	 * @param id
	 * @param nombre
	 * @return
	 */
	public IRHorarioCursada getIRHorarioCursada(Integer idHorario, Integer idCursada) {
		return new IRHorarioCursada(idHorario, idCursada);
	}

	/**
	 * Crea el objeto
	 * 
	 * @param nombre
	 * @return
	 */
//	public IRHorarioInstructor getIRHorarioInstructor(Integer idCursada, String dniInstructor) {
//		return new IRHorarioInstructor(idCursada,dniInstructor);
//	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	// TODO areglar para busacar para que te de un objeto
	 public List<IRHorarioCursada> findAll(Integer idCursadaC) {
	 return this.irHorarioCursadaDAO.findAll(idCursadaC);
	 }

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
//	 En un futuro se puede poner nombre(primero agragar a la DAO
	 public IRHorarioCursada findIRHorarioCursada(Integer idCursada) {
	 return this.irHorarioCursadaDAO.find(idCursada);
	 }

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	public IRHorarioCursada getIRHorarioCursada(Integer id) {
		return this.irHorarioCursadaDAO.get(id);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @return
	 */
	public List<IRHorarioCursada> getAllIRHorarioCursada() {
		return this.irHorarioCursadaDAO.getAll();
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param ids
	 * @return
	 */
	public List<IRHorarioCursada> getSelectedIRHorarioCursada(Integer... ids) {// VER por exception
		List<IRHorarioCursada> idList = new ArrayList<IRHorarioCursada>();

		for (Integer id : ids) {
			idList.add(this.irHorarioCursadaDAO.get(id));
		}
		return idList;
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param Sala
	 * @return
	 */
	public Integer addIRHorarioCursada(IRHorarioCursada iRHorarioCursada) {
		return this.irHorarioCursadaDAO.add(iRHorarioCursada);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param id
	 * @return
	 */
	public boolean deleteIRHorarioCursada(Integer id) {
		return this.irHorarioCursadaDAO.delete(id);
	}

	/**
	 * Va contra la base de datos y obtiene el objeto
	 * 
	 * @param Sala
	 * @return
	 */
	// En un futuro se puede poner nombre(primero agragar a la DAO
	// public boolean updateIRCursadaInstructor(IRCursadaInstructor sala) {
	// return this.salaDAO.update(sala);
	// }

}
